; Функция нахождения длины строки
; Вход: R1 - адрес строки
; Выход: R0 - длина строки в байтах

function	_strlen
	xor	r0, r0		; Обнуление длины
;	col			; Сброс старших бит при загрузки констант
m1:
	mov	r2, (r1)	; Загрузка машинного слова
	rol	r2, 8		; Циклический сдвиг на 8 бит влево
	col load	r3, 0xff	; Загрузка восьмибитной константы
	and	r3, r2		; Первая проверка на конец строки
	je	done		; Найден терминатор строки
	inc	r0		; Длина строки + 1
	rol	r2, 8		; Циклический сдвиг на 8 бит влево
	col 
	load	r3, 0xff	; Загрузка восьмибитной константы
	and	r3, r2		; Первая проверка на конец строки
	je	done		; Найден терминатор строки
	inc	r0		; Длина строки + 1
	rol	r2, 8		; Циклический сдвиг на 8 бит влево
	col 
	load	r3, 0xff	; Загрузка восьмибитной константы
	and	r3, r2		; Первая проверка на конец строки
	je	done		; Найден терминатор строки
	inc	r0		; Длина строки + 1
	rol	r2, 8		; Циклический сдвиг на 8 бит влево
	col 
	load	r3, 0xff	; Загрузка восьмибитной константы
	and	r3, r2		; Первая проверка на конец строки
	je	done		; Найден терминатор строки
	inc	r0		; Длина строки + 1
	inc	r1, 4		; Переход на следующее машинное слово
	jmp	m1		; Продолжение подсчёта
done:
	return			; Возврат из функции
end
